
#ifndef _SCENE_H
#define _SCENE_H

#include "opengl.h"
#include "Image.h"
#include "Vec3f.h"
#include "Animation.h"
#include "planete.h"
#include "fuse.h"

//! The structure Scene stores all texture Id or images used by the sceneDraw fonction
struct Scene
{
  Animation anim;
  unsigned int tex_tree;
  Image terrain;
  unsigned int tex_terrain;
  unsigned int tex_cube_face;
  unsigned int tex_cube_droite;
  unsigned int tex_cube_gauche;
  unsigned int tex_cube_arriere;
  unsigned int tex_cube_dessus;
  unsigned int tex_cube_dessous;
  unsigned int tex_eau;
};


//! Init a Scene
void sceneInit(Scene& sc);

//! Draw the scene
void sceneDraw(const Scene& sc);

//! Draw a cube
void draw_cube();

//!Draw cube monde
void draw_cube_monde(const Image &im1,const Image &im2,const Image &im3,const Image &im4,const Image &im5,const Image &im6);

//Draw plan
void draw_plan();

//! Draw a cylinder
void draw_cylinder();

//! Draw a sphere
void draw_sphere(unsigned int tex_planete);

//! Draw a cone
void draw_cone();

//! Draw arbre
void draw_arbre(const unsigned int texture);

//!Draw foret
void draw_foret(const unsigned int texture, const Image &im);

//!Draw eau
void draw_eau (const unsigned int texture);

//! Draw a terrain
void dessinerTerrain(const Image& im);

//! Draw terrain's Normals
void normalTerrain(const Image &im, int i, int j);

//! Draw the X,Y,Z axes
void draw_axes();

//! Draw a grid in the XZ plane
void draw_grid();


#endif
